#!/bin/bash


: << 'COMMENT'
编写时间: 2025-03-17
编写人: 王杰民
修改人: 吴建波
编写功能: 该脚本用于redis服务部署
         1 sh函数文件下载
         2 服务端口验证，服务关闭
         3 服务启动
COMMENT



# 变量数据配置
port=6379
linux_path_redis="/home/tecrun/tools9"
fie_url="http://192.168.53.144/E:/sh/tools/redis504.tar.gz"
file_name="redis504.tar.gz"
redis_conf_path="/home/tecrun/tools9/redis504/etc/redis.conf"

# 判断文件夹是否存在，文件夹创建
if [ ! -d "$linux_path_redis" ]; then
  echo "目录 $linux_path_redis 不存在，请确认路径。"
  mkdir -p "$linux_path_redis"
fi
cd "$linux_path_redis" || exit

# 判断压缩包是否存在，存在时不进行压缩包下载
if [ ! -f "$file_name" ]; then
  echo "未找到 $file_name 文件，开始下载..."
  wget "$fie_url"
  if [ $? -eq 0 ]; then
    echo "下载成功！"
  else
    echo "下载失败！"
    exit 1
  fi
else
  echo "已找到 $file_name 文件，跳过下载。"
fi


# 判断6379端口号的redis服务是否存在，存在时提示redis使用的端口号，用户是否需要关闭端口号对应的redis服务
if [ $(netstat -anp | grep ${port} | wc -l) -gt 0 ]; then
  echo "6379端口号的redis服务已存在，请确认是否需要关闭该服务。"
  read -p "是否需要关闭该服务？(y/n): " answer
  if [ "$answer" = "y" ]; then
    echo "正在关闭6379端口号的redis服务..."
    kill -9 $(netstat -anp | grep ${port} | awk '{print $7}' | cut -d'/' -f 1)
    if [ $? -eq 0 ]; then
      echo "redis服务已关闭。"
    else
      echo "redis服务关闭失败。"
      exit 1
    fi
  else
    echo "用户取消关闭操作。"
    exit
  fi
else
  echo "${port}端口号的redis服务不存在，跳过关闭操作。"
fi

# 启动redis服务
echo "正在启动redis服务..."
tar -zxvf "$file_name"
if [ $? -eq 0 ]; then
  echo "解压成功！"
  # redis启动
  #./redis-6.0.5/src/redis-server ./redis-6.0.
  pwd
  cd redis504/bin
  chmod +x ./* #增加执行权限
  # 配置文件进行动态修改
  sed -i "s/^port [0-9]\+/port ${port}/" $redis_conf_path
  #replace_config "../etc/redis.conf" "6379" "$port"
  ./redis-server ../etc/redis.conf #启动redis
else
  echo "解压失败！"
  exit 1
fi
  echo "redis服务启动成功。"


# 验证redis是否启动成功
if [ $(netstat -anp | grep ${port} | wc -l) -gt 0 ]; then
  echo "redis服务启动成功。"
else
  echo "redis服务启动失败。"
  exit 1
fi







